package bts.tcc;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.text.format.Time;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

public class AgendarTarefaActivity extends Activity {
	
	String nomeTarefa = "";
	int ativo = 0; //0 - ativo, 1 - inativo
	int idDispositivo = 0;
	int idAcao = 0;
	List<Tarefa> listaTarefas = new ArrayList<Tarefa>();
	int hora = -1;
	int minuto = -1;
	List<Integer> diasSemana;
	
	 /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.agendar_tarefa);  
        
        //pega os dipositivos do banco
//        SQLite sqLite = new SQLite(this, "dbTCC", null, 3);
//        Cursor cursorDispositivos = sqLite.getCursor("DISPOSITIVO"
//        		, new String[] {"ID_DISPOSITIVO", "DESCRICAO" }
//        		, null);
//        List<Dispositivo> listaDispositivos = new ArrayList<Dispositivo>();
//        if (cursorDispositivos != null)
//        {
//        	while(cursorDispositivos.moveToNext())
//        	{
//        		Dispositivo dispositivo = new Dispositivo();
//        		dispositivo.setIdDispositivo(cursorDispositivos.getInt(cursorDispositivos.getColumnIndex("ID_DISPOSITIVO")));
//        		dispositivo.setDescricao(cursorDispositivos.getString(cursorDispositivos.getColumnIndex("DESCRICAO")));
//        		listaDispositivos.add(dispositivo);
//        	}
//        }
        
        
        final Spinner cboDispositivo = (Spinner)findViewById(R.id.cboDispositivo);
        final Spinner cboAcao = (Spinner)findViewById(R.id.cboAcao);
        final EditText txtNomeTarefa = (EditText)findViewById(R.id.txtNomeTarefa);
        final CheckBox chkDomingo = (CheckBox)findViewById(R.id.chkDomingo);
        final CheckBox chkSegunda = (CheckBox)findViewById(R.id.chkSegunda);
        final CheckBox chkTerca = (CheckBox)findViewById(R.id.chkTerca);
        final CheckBox chkQuarta = (CheckBox)findViewById(R.id.chkQuarta);
        final CheckBox chkQuinta = (CheckBox)findViewById(R.id.chkQuinta);
        final CheckBox chkSexta = (CheckBox)findViewById(R.id.chkSexta);
        final CheckBox chkSabado = (CheckBox)findViewById(R.id.chkSabado);
    	final RadioGroup rdAtivo = (RadioGroup)findViewById(R.id.rdAtivo);
    	final TimePicker tpkHoraExecucao = (TimePicker)findViewById(R.id.tpkHoraExecucao);
        
        
        //chumbado
        List<Dispositivo> listaDispositivos = new ArrayList<Dispositivo>();
        Dispositivo d1 = new Dispositivo();
        Dispositivo d2 = new Dispositivo();
        d1.setIdDispositivo(1);
        d1.setDescricao("Bluethooth");
        d2.setIdDispositivo(2);
        d2.setDescricao("Wi-Fi");
        listaDispositivos.add(d1);
        listaDispositivos.add(d2);
        
        List<String> itensCboDispositivo = new ArrayList<String>();
        itensCboDispositivo.add("Selecione...");
        for (Dispositivo dispositivo : listaDispositivos) {
			itensCboDispositivo.add(dispositivo.getDescricao());
		}
        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, itensCboDispositivo);
        adapter.notifyDataSetChanged();
        
        cboDispositivo.setAdapter(adapter);
        
        //chumbado
        List<Acao> listaAcoes = new ArrayList<Acao>();
        Acao a1 = new Acao();
        Acao a2 = new Acao();
        a1.setIdAcao(1);
        a1.setDescricao("Ligar");
        a2.setIdAcao(2);
        a2.setDescricao("Desligar");
        listaAcoes.add(a1);
        listaAcoes.add(a2);
        
        List<String> itensCboAcao = new ArrayList<String>();
        itensCboAcao.add("Selecione...");
        for (Acao acao : listaAcoes) {
			itensCboAcao.add(acao.getDescricao());
		}
        ArrayAdapter adapter2 = new ArrayAdapter(this, android.R.layout.simple_spinner_item, itensCboAcao);
        adapter.notifyDataSetChanged();
        
        cboAcao.setAdapter(adapter2);
        
        
        //
        //Action dos botoes
        //
        final Button btnCancelar = (Button) findViewById(R.id.btnCancelar); 
        btnCancelar.setOnClickListener(new View.OnClickListener() {  
            public void onClick(View v) { 
            	finish();
            }  
        }); 
        
        final Button btnRegistrar = (Button) findViewById(R.id.btnRegistrar); 
        btnRegistrar.setOnClickListener(new View.OnClickListener() {  
            public void onClick(View v) { 

            	converteDadosEmObjetos( txtNomeTarefa
				            			,cboDispositivo 
				            			,cboAcao        
				            			,chkDomingo     
				            			,chkSegunda     
				            			,chkTerca       
				            			,chkQuarta      
				            			,chkQuinta      
				            			,chkSexta       
				            			,chkSabado      
				            			,tpkHoraExecucao
            						    , rdAtivo);
            	if (validaDados()) {
            		Tarefa tarefa = new Tarefa();
                	tarefa.setNomeTarefa(nomeTarefa);
                	tarefa.setHora(hora);
                	tarefa.setMinuto(minuto);
                	tarefa.setDiasSemana(diasSemana);
//                	tarefa.setIdAcaoDispositivo();
                	tarefa.setIdTarefa(listaTarefas.size() + 1);
                	tarefa.setStatusTarefa(ativo);
                	tarefa.setRegistroManual(1);
                	
                	listaTarefas.add(tarefa);
                	Toast.makeText(AgendarTarefaActivity.this, "Atividade cadastrada com sucesso!", Toast.LENGTH_SHORT).show();
                	finish();
				}
            	else {
            		Toast.makeText(AgendarTarefaActivity.this, "Todos os parâmetros são obrigatórios.", Toast.LENGTH_SHORT).show();
				}
            }  
        }); 
        
        
    }
    
    public boolean validaDados()
    {
    	if ((nomeTarefa.isEmpty() || nomeTarefa == null) ||
    			idDispositivo == 0 ||
    			idAcao == 0 ||
    			diasSemana.size() == 0 ||
    			hora == -1 ||
    			minuto == -1 ||
    			(ativo != 0 && ativo != 1)) {
			return false;
		}
    	return true;
    }
    
    public void converteDadosEmObjetos(EditText txtNomeTarefa,
    								   Spinner cboDispositivo,
    								   Spinner cboAcao,
    								   CheckBox chkDomingo,
    								   CheckBox chkSegunda,
    								   CheckBox chkTerca,
    								   CheckBox chkQuarta,
    								   CheckBox chkQuinta,
    								   CheckBox chkSexta,
    								   CheckBox chkSabado,
    								   TimePicker tpkHoraExecucao,
    								   RadioGroup rdAtivo)
    {
    	nomeTarefa = txtNomeTarefa.getText().toString();
    	
    	if(cboDispositivo.getSelectedItem().toString().toUpperCase().equals("WI-FI"))
    	{
    		idDispositivo = 2;
    	}
    	else if(cboDispositivo.getSelectedItem().toString().toUpperCase().equals("BLUETHOOTH"))
    	{
    		idDispositivo = 1;
    	} else {
			idDispositivo = 0;
		}
    	
    	if (cboAcao.getSelectedItem().toString().toUpperCase().equals("LIGAR")) 
    	{
			idAcao = 1;
		}
    	else if (cboAcao.getSelectedItem().toString().toUpperCase().equals("DESLIGAR")) 
    	{
    		idAcao = 2;
    	} else {
			idAcao = 0;
		}
    	
    	diasSemana = new ArrayList<Integer>();
    	if (chkDomingo.isChecked()) {
			diasSemana.add(1);
		}
    	if (chkSegunda.isChecked()) {
    		diasSemana.add(2);
		}
    	if (chkTerca.isChecked()) {
    		diasSemana.add(3);
		}
    	if (chkQuarta.isChecked()) {
    		diasSemana.add(4);
		}
    	if (chkQuinta.isChecked()) {
    		diasSemana.add(5);
		}
    	if (chkSexta.isChecked()) {
    		diasSemana.add(6);
		}
    	if (chkSabado.isChecked()) {
    		diasSemana.add(7);
		}
    	
    	hora = tpkHoraExecucao.getCurrentHour();
    	minuto = tpkHoraExecucao.getCurrentMinute();
    	
    	int radioButtonID = rdAtivo.getCheckedRadioButtonId();
    	View radioButton = rdAtivo.findViewById(radioButtonID);
    	ativo = rdAtivo.indexOfChild(radioButton);
    	
    	//inverte o valor porque 0 é sim, entao seta 1 para caracterizar como ativo
    	if (ativo == 0) {
			ativo = 1;
		} else {
			ativo = 0;
		}
    }
}
